/**
 * @file   anonymous.hpp
 * @author wolfhead <wolfhead@wolfhead-laptop>
 * @date   Sat Dec  3 14:49:16 2011
 * 
 * @brief  
 * 
 * 
 */
#ifndef ACAPELLA_ANONYMOUS_HPP
#define ACAPELLA_ANONYMOUS_HPP

namespace acapella
{

struct AnonymousHolder
{
    template<typename T>
    AnonymousHolder(T /*eval*/){};
};

#define __ANONYMOUS(type, var, line) type var##line
#define _ANONYMOUS(type, line) __ANONYMOUS(type, _anonymous, line)
#define ANONYMOUS(type) _ANONYMOUS(type, __LINE__)

#define STATIC_EVAL(eval) \
    ANONYMOUS(static acapella::AnonymousHolder)((eval))

}//namespace acapella

#endif // #ifndef ACAPELLA_ANONYMOUS_HPP
